/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package aprendizajePorRefuerzo.agente;

import aprendizajePorRefuerzo.accion.Accion;
import aprendizajePorRefuerzo.estado.Estado;
import aprendizajePorRefuerzo.politica.Politica;
import aprendizajePorRefuerzo.reward.Reward;

/**
 *
 * @author Fernando Sorzana
 */
public interface Agente {
    
    /**
     * El agente toma una acción en función del estado en que se encuentra y el 
     * reward que obtuvo.
     * @param estado
     * @param reward
     * @return 
     */
    public Accion tomarAccion(Estado estado);
    
    public void aprender(Estado estado, Reward reward);
    
    public Politica getPolitica();
    
    public void setPolitica(Politica politica);
    
}
